<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="utf-8">
    <style type="text/css">
        p {
            font-weight: bold;
        }

        p {
            font-weight: 1000;
        }

        p {
            font-size: 48px;
        }

        p {
            font-family: "楷体";
        }
    </style>
    <title>新年快乐</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="theme-color" content="#000000">
    <meta name="msapplication-TileColor" content="#000000">
    <link href="files/css/main.css" rel="stylesheet">
    <script src="files/js/jquery.min.js" type="text/javascript"></script>
    <link rel="stylesheet" href="files/css/style.css">
    <script>
        var shouci = true;
        console.log(shouci);

        function bodyPlayMusic() {
            if (shouci) {
                shouci = false;
                audio.play();
                console.log(shouci);
            }
        };
    </script>
</head>


<body onload="s()">

    <audio id="audioDom" src="files/1.mp3" preload="auto" loop="loop"></audio>

    <div id="yhBtn"
        style="position:fixed;top:0;left:0;width:100%;height:100%;z-index:999;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#fff ; font-size:20px    ">
        <p>💥点击开始💥</p>
        <img style="width:64px;margin-bottom:36px " src="files/boom.png">
    </div>

    <div style="height: 0; width: 0; position: absolute; visibility: hidden;">
        <svg xmlns="http://www.w3.org/2000/svg">
            <symbol id="icon-play" viewBox="0 0 24 24">
                <path d="M8 5v14l11-7z"></path>
            </symbol>
            <symbol id="icon-pause" viewBox="0 0 24 24">
                <path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"></path>
            </symbol>
            <symbol id="icon-close" viewBox="0 0 24 24">
                <path
                    d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z">
                </path>
            </symbol>
            <symbol id="icon-settings" viewBox="0 0 24 24">
                <path
                    d="M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z">
                </path>
            </symbol>
            <symbol id="icon-sound-on" viewBox="0 0 24 24">
                <path
                    d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z">
                </path>
            </symbol>
            <symbol id="icon-sound-off" viewBox="0 0 24 24">
                <path
                    d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z">
                </path>
            </symbol>
        </svg>
    </div>
    <div class="div_btn" id='div_wph' style="bottom: 70px; right: 35px;position: fixed; cursor: pointer; width: 42px; height: 42px; border: 0px; border-radius: 50%; font-size: 1em; line-height: 40px; text-align: center; z-index: 999; ">
        <a href="https://newyear.wuyuan.dev" target="_blank"><img src="files/add.png" width="45px" height="45px" /></a>
    </div>
    <!-- 引用NianBroken的FireworkSimulator，仅为引用，非恶意搬运，侵删 -->
    <div class="container">
        <div class="loading-init">
            <div class="loading-init__header">
                加载中(Loading)
            </div>
            <div class="loading-init__status">
                正在准备烟花(Downloading files from github)
            </div>
        </div>

        <div class="stage-container remove">
            <div class="page_two hide">
                <div id="text" style="display:none;">岁未将至 平安喜乐 2025万事如意🧨
                    <br>唯愿烟花像星辰 祝你所愿皆成真🧨<br>
                    <br>有一段给你的留言,不知来处,更待观阅<br>
                    <br>『<span id="massagespan">新年快乐！</span>』<br><br>
                    <br>曾有<span id="busuanzi_value_page_pv"></span>人与你共同在线观赏焰火
                    <br>愿你们新的一年无限进步，步步高升<br>
                </div><!--此处已进行修改，优化了倒计时-->
                <div class="type_words" id="contents" style="font-size:1.08rem;line-height:1.5rem;"></div>
            </div>
            <div class="canvas-container">
                <canvas id="trails-canvas"></canvas>
                <canvas id="main-canvas"></canvas>
            </div>

            <div class="controls">
                <div class="btn pause-btn">
                    <svg fill="0" width="0" height="0">
                        <use href="" xlink:href="">
                        </use>
                    </svg>
                </div>
                <div class="btn sound-btn">
                    <svg fill="0" width="0" height="0">
                        <use href="#icon-sound-off" xlink:href="#icon-sound-off">
                        </use>
                    </svg>
                </div>
                <div class="btn settings-btn">
                    <svg fill="white" width="48" height="48">
                        <use href="#icon-settings" xlink:href="#icon-settings">
                        </use>
                    </svg>
                </div>
            </div>

            <div class="menu hide">
                <div class="menu__inner-wrap">
                    <div class="btn btn--bright close-menu-btn">
                        <svg fill="white" width="48" height="48">
                            <use href="#icon-close" xlink:href="#icon-close">
                            </use>
                        </svg>
                    </div>
                    <div class="menu__header">
                        设置
                    </div>
                    <div class="menu__subheader">
                        若想了解更多信息 请点击任意标签
                    </div>
                    <form>
                        <div class="form-option form-option--select">
                            <label class="shell-type-label">
                                烟花类型
                            </label>
                            <select class="shell-type">
                            </select>
                        </div>
                        <div class="form-option form-option--select">
                            <label class="shell-size-label">
                                烟花大小
                            </label>
                            <select class="shell-size">
                            </select>
                        </div>
                        <div class="form-option form-option--select">
                            <label class="quality-ui-label">
                                画质
                            </label>
                            <select class="quality-ui">
                            </select>
                        </div>
                        <div class="form-option form-option--select">
                            <label class="sky-lighting-label">
                                照亮天空
                            </label>
                            <select class="sky-lighting">
                            </select>
                        </div>
                        <div class="form-option form-option--select">
                            <label class="scaleFactor-label">
                                缩放
                            </label>
                            <select class="scaleFactor">
                            </select>
                        </div>
                        <div class="form-option form-option--checkbox">
                            <label class="auto-launch-label">
                                自动放烟花
                            </label>
                            <input class="auto-launch" type="checkbox" />
                        </div>
                        <div class="form-option form-option--checkbox form-option--finale-mode">
                            <label class="finale-mode-label">
                                同时放更多的烟花
                            </label>
                            <input class="finale-mode" type="checkbox" />
                        </div>
                        <div class="form-option form-option--checkbox">
                            <label class="hide-controls-label">
                                隐藏控制按钮
                            </label>
                            <input class="hide-controls" type="checkbox" />
                        </div>
                        <div class="form-option form-option--checkbox form-option--fullscreen">
                            <label class="fullscreen-label">
                                全屏
                            </label>
                            <input class="fullscreen" type="checkbox" />
                        </div>
                        <div class="form-option form-option--checkbox">
                            <label class="long-exposure-label">
                                保留烟花的火花
                            </label>
                            <input class="long-exposure" type="checkbox" />
                        </div>
                    </form>
                    <div class="credits">
                        <p class="copyright">
                            由 <a target="_blank" href="https://wuyuan.dev/">孙悟元</a> 制作,基于GitHub用户NianBroken,corestudi0的修改版本
                        </p>
                    </div>
                </div>
            </div>
        </div>
        <div class="help-modal">
            <div class="help-modal__overlay">
            </div>
            <div class="help-modal__dialog">
                <div class="help-modal__header">
                </div>
                <div class="help-modal__body">
                </div>
                <button type="button" class="help-modal__close-btn">
                    关闭
                </button>
            </div>
        </div>
    </div>
    
    <!-- partial -->
    <script src='files/js/fscreen.js'></script>
    <script src='files/js/Stage.js'></script>
    <script src='files/js/MyMath.js'></script>
    <script src="files/js/script.js"></script>


    <script>
        function musicPlay(isPlay) {
            var media = document.querySelector('#audioDom');
            if (isPlay && media.paused) {
                media.play();
            }
            if (!isPlay && !media.paused) {
                media.pause();
            }
        }

        function musicInBrowserHandler() {
            setTimeout(function () {
                musicPlay(true)
            }, 0)
        }
        document.body.addEventListener('touchstart', musicInBrowserHandler);
        $('#yhBtn').click(e => {
            $('#yhBtn').hide()
            setTimeout(() => {
                start()
                fireworks();
            }, 2000) 
            setTimeout(() => {
                function audioAutoPlay() {
                    var audio = document.getElementById('audioDom');
                    audio.play();
                }
                audioAutoPlay();
            }, 300) 
            console.log(updateConfig({
                autoLaunch: true
            }));
        })

        function fireworks() {
            $('.page_one').addClass(' hide');
            $('.page_two').removeClass(' hide');
        }

        function start() {
            let str = $("#text").html(); 
            let str_ = ''
            let i = 0
            let content = document.getElementById('contents')
            let timer = setInterval(() => {
                if (str_.length < str.length) {
                    str_ += str[i++]
                    content.innerHTML = '<p>' + str_ + '<span class="xx" style="opacity: 1;    color: white;">_</span></p>'
                } else {
                    clearInterval(timer)
                    content.innerHTML = '<p>' + str_ + '</p>'
                }
            }, 100)
        }
    </script>
    <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

    <!--tip:此处为挂载的网页,源码中引用过他人的代码，均已标注-->
    <!--firework_simulator版权所有人:NianBroken，侵删-->
    
</body>

<script type="text/javascript">

    var Base64 = {
       
        table: [
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
            'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
            'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
            'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
            'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
            'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
            'w', 'x', 'y', 'z', '0', '1', '2', '3',
            '4', '5', '6', '7', '8', '9', '+', '/'
        ],
        UTF16ToUTF8: function (str) {
            var res = [], len = str.length;
            for (var i = 0; i < len; i++) {
                var code = str.charCodeAt(i);
                if (code > 0x0000 && code <= 0x007F) {
                   
                    res.push(str.charAt(i));
                } else if (code >= 0x0080 && code <= 0x07FF) {
                   
                 
                   
                    var byte1 = 0xC0 | ((code >> 6) & 0x1F);
                   
                    var byte2 = 0x80 | (code & 0x3F);
                    res.push(
                        String.fromCharCode(byte1),
                        String.fromCharCode(byte2)
                    );
                } else if (code >= 0x0800 && code <= 0xFFFF) {
                   
                    var byte1 = 0xE0 | ((code >> 12) & 0x0F);
                    
                    var byte2 = 0x80 | ((code >> 6) & 0x3F);
                 
                    var byte3 = 0x80 | (code & 0x3F);
                    res.push(
                        String.fromCharCode(byte1),
                        String.fromCharCode(byte2),
                        String.fromCharCode(byte3)
                    );
                } else if (code >= 0x00010000 && code <= 0x001FFFFF) {
                   
                } else if (code >= 0x00200000 && code <= 0x03FFFFFF) {
                   
                } else /** if (code >= 0x04000000 && code <= 0x7FFFFFFF)*/ {
                  
                }
            }

            return res.join('');
        },
        UTF8ToUTF16: function (str) {
            var res = [], len = str.length;
            var i = 0;
            for (var i = 0; i < len; i++) {
                var code = str.charCodeAt(i);
              
                if (((code >> 7) & 0xFF) == 0x0) {
                  
                    res.push(str.charAt(i));
                } else if (((code >> 5) & 0xFF) == 0x6) {
                  
                    var code2 = str.charCodeAt(++i);
                    var byte1 = (code & 0x1F) << 6;
                    var byte2 = code2 & 0x3F;
                    var utf16 = byte1 | byte2;
                    res.push(Sting.fromCharCode(utf16));
                } else if (((code >> 4) & 0xFF) == 0xE) {
                   
                    var code2 = str.charCodeAt(++i);
                    var code3 = str.charCodeAt(++i);
                    var byte1 = (code << 4) | ((code2 >> 2) & 0x0F);
                    var byte2 = ((code2 & 0x03) << 6) | (code3 & 0x3F);
                    var utf16 = ((byte1 & 0x00FF) << 8) | byte2
                    res.push(String.fromCharCode(utf16));
                } else if (((code >> 3) & 0xFF) == 0x1E) {
                   
                } else if (((code >> 2) & 0xFF) == 0x3E) {
                  
                } else {
                   
                }
            }

            return res.join('');
        },
        encode: function (str) {
            if (!str) {
                return '';
            }
            var utf8 = this.UTF16ToUTF8(str); 
            var i = 0; 
            var len = utf8.length;
            var res = [];
            while (i < len) {
                var c1 = utf8.charCodeAt(i++) & 0xFF;
                res.push(this.table[c1 >> 2]);
             
                if (i == len) {
                    res.push(this.table[(c1 & 0x3) << 4]);
                    res.push('==');
                    break;
                }
                var c2 = utf8.charCodeAt(i++);
               
                if (i == len) {
                    res.push(this.table[((c1 & 0x3) << 4) | ((c2 >> 4) & 0x0F)]);
                    res.push(this.table[(c2 & 0x0F) << 2]);
                    res.push('=');
                    break;
                }
                var c3 = utf8.charCodeAt(i++);
                res.push(this.table[((c1 & 0x3) << 4) | ((c2 >> 4) & 0x0F)]);
                res.push(this.table[((c2 & 0x0F) << 2) | ((c3 & 0xC0) >> 6)]);
                res.push(this.table[c3 & 0x3F]);
            }

            return res.join('');
        },
        decode: function (str) {
            if (!str) {
                return '';
            }

            var len = str.length;
            var i = 0;
            var res = [];

            while (i < len) {
                code1 = this.table.indexOf(str.charAt(i++));
                code2 = this.table.indexOf(str.charAt(i++));
                code3 = this.table.indexOf(str.charAt(i++));
                code4 = this.table.indexOf(str.charAt(i++));

                c1 = (code1 << 2) | (code2 >> 4);
                c2 = ((code2 & 0xF) << 4) | (code3 >> 2);
                c3 = ((code3 & 0x3) << 6) | code4;

                res.push(String.fromCharCode(c1));

                if (code3 != 64) {
                    res.push(String.fromCharCode(c2));
                }
                if (code4 != 64) {
                    res.push(String.fromCharCode(c3));
                }

            }

            return this.UTF8ToUTF16(res.join(''));
        }
    };


</script>

</html>
<script>
    function GetQueryString(name) {
        var reg = new RegExp("(^|&)" + name + "=(.*)$");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return unescape(r[2]);
        } else {
            return window.location.pathname.replace("/", "*");
              }
    }
    massage = GetQueryString("massage");
    massage = Base64.decode(massage);
    document.getElementById("massagespan").innerText = massage;
</script>